#pragma once
#include "afxcmn.h"
#include "ui/poke_dlg_key_control.h"
#include "ui/poke_dlg_mouse_ctrl.h"
#include "poke_dialog_helper.h"
#include "poke_framework.h"

// CPokeDlgInput dialog

class CPokeDlgInput : public CDialog, public M::Atom
{
    DECLARE_DYNAMIC(CPokeDlgInput)

public:
    CPokeDlgInput(CWnd* pParent = NULL);   // standard constructor
    virtual ~CPokeDlgInput();

// Dialog Data
    enum { IDD = IDD_DIALOG_INPUT };

protected:
    DISABLE_DIALOG_DEFAULT_ACTION;
    virtual BOOL OnInitDialog();
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    
    virtual M::String name() const { return PAN_DLG_INPUT; }
    virtual bool OnEvent(const M::AtomEndPoint &oSrcAtom, int nEventId, void *pParams);

    void UpdateModel();

private:
    // // Tab Key/Mouse Control List
    CTabCtrl m_oTabInput;
    CPokeDlgKeyControl m_oDlgKeyCtrl;
    CPokeDlgMouseCtrl m_oDlgMouseCtrl;
    BOOL m_bSetLeftCtrl;
    BOOL m_bSetRightCtrl;
    BOOL m_bSetLeftAlt;
    BOOL m_bSetRightAlt;
    BOOL m_bSetLeftShift;
    BOOL m_bSetRightShift;

public:
    DECLARE_MESSAGE_MAP()

    afx_msg void OnTcnSelchangeTabKeyMouse(NMHDR *pNMHDR, LRESULT *pResult);
    afx_msg void OnBnClickedCheckLeftCtrl();
    afx_msg void OnBnClickedCheckRightCtrl();
    afx_msg void OnBnClickedCheckLeftAlt();
    afx_msg void OnBnClickedCheckRightAlt();
    afx_msg void OnBnClickedCheckLeftShift();
    afx_msg void OnBnClickedCheckRightShift();
};
